package admin

import (
	"blog/app/model/admin"
	"blog/app/services/system"
	"blog/core"
	"blog/utils/encryption"
)

type Admin struct{}

// Lists , 管理员列表
// 参数：
//		page 页码
//		limit 每页的数量
// 返回参数
//		列表引用指针
//		总数
func (a *Admin) Lists(page, limit int) (*[]admin.ListsAdmin, int64) {
	var lists []admin.ListsAdmin
	var count int64
	core.DbConnect.Model(system.Model.AdminModel).Count(&count).Scopes(system.Condition.ListsCommon.Page(page, limit)).Find(&lists)
	return &lists, count
}

// Create , 添加管理员
func (a *Admin) Create(param *admin.CreateAdmin) error {
	pwd, _ := encryption.Crypt.User.Encoder(param.Password)
	param.Password = pwd
	return core.DbConnect.Create(&param).Error
}

// Edit , 编辑管理员
func (a *Admin) Edit(id int, param *admin.CreateAdmin) error {
	var data = make(map[string]interface{})
	data["name"] = param.Name
	if param.Password != "" {
		pwd, _ := encryption.Crypt.User.Encoder(param.Password)
		data["password"] = pwd
	}

	return core.DbConnect.Model(system.Model.AdminModel).Scopes(system.Condition.Admin.Id(id)).Updates(data).Error
}

// Del , 删除管理员
func (a *Admin) Del(id int) error {
	return core.DbConnect.Model(system.Model.AlbumModel).Scopes(system.Condition.Admin.Id(id)).Delete(&admin.Admin{}).Error
}
